home *** CD-ROM | disk | FTP | other *** search
-
-
-
- mmmmddddPPPPaaaannnniiiicccc((((3333ddddmmmm)))) mmmmddddPPPPaaaannnniiiicccc((((3333ddddmmmm))))
-
-
-
- NNNNAAAAMMMMEEEE
- mdPanic - flush MIDI output and transmit (obsolete)
-
- SSSSYYYYNNNNOOOOPPPPSSSSIIIISSSS
- ####iiiinnnncccclllluuuuddddeeee <<<<ddddmmmmeeeeddddiiiiaaaa////mmmmiiiiddddiiii....hhhh>>>>
-
- iiiinnnntttt mmmmddddPPPPaaaannnniiiicccc((((MMMMDDDDppppoooorrrrtttt ppppoooorrrrtttt))))
-
- DDDDEEEESSSSCCCCRRRRIIIIPPPPTTTTIIIIOOOONNNN
- mmmmddddPPPPaaaannnniiiicccc is an obsolete routine which sends ALL NOTES OFF and RESET ALL
- CONTROLLERS messages on all channels.
-
- The following program illustrates the prefered method of silencing stuck
- notes (the code is also available in
- /usr/share/src/dmedia/midi/simple/panic.c if the MIDI example code is
- installed).
-
- #include <stdio.h>
- #include <dmedia/midi.h>
-
- long long stamp = 0;
-
- char *usage = "Usage: panic [-f] [-a | interface name]"
-
- /*
- * Transmit ALL NOTES OFF, ALL SOUND OFF, and RESET ALL CONTROLLERS
- * messages on all 16 channels.
- */
- void
- send_control_messages(MDport port)
- {
- int channel, byte;
- MDevent ev;
- char data_byte[] = { MD_RESETALLCONTROLLERS, MD_ALLNOTESOFF,
- MD_ALLSOUNDOFF };
-
- for (channel = 0; channel < 16; channel++) {
- for (byte = 0; byte < 3; byte++) {
- ev.stamp = stamp++;
- ev.msg[0] = MD_CONTROLCHANGE | channel;
- ev.msg[1] = data_byte[byte];
- ev.msg[2] = 0;
- mdSend(port, &ev, 1);
- }
- }
- }
-
-
- /*
- * Transmit explicit NOTE OFF events on all channels.
- */
- void
-
-
-
- PPPPaaaaggggeeee 1111
-
-
-
-
-
-
- mmmmddddPPPPaaaannnniiiicccc((((3333ddddmmmm)))) mmmmddddPPPPaaaannnniiiicccc((((3333ddddmmmm))))
-
-
-
- send_note_off_events(MDport port)
- {
- int channel, note;
- MDevent ev;
-
- for (channel = 0; channel < 16; channel++) {
- for (note = 0; note < 128; note++) {
- ev.stamp = stamp++;
- ev.msg[0] = MD_NOTEOFF;
- ev.msg[1] = note;
- ev.msg[2] = 0;
- mdSend(port, &ev, 1);
- }
- }
- }
-
- void
- main(int argc, char **argv)
- {
- int num_interfaces;
- MDport port;
-
- /* First initialize the MIDI library */
- num_interfaces = mdInit();
- if (num_interfaces == 0) {
- fprintf(stderr, "panic: no interfaces configured0);
- exit(1);
- }
-
- /* Open the port */
- outport = mdOpenOutPort(name);
- if (outport == NULL) {
- fprintf(stderr, "panic: Could not open interface0);
- exit(1);
- }
-
- /* Transmit 1 event every millisecond */
- mdSetStampMode(outport, MD_RELATIVETICKS);
- mdSetDivision(outport, 1);
- mdSetTempo(outport, 1000);
-
- send_note_off_events(outport);
- send_control_messages(outport);
-
- /* Wait for messages to go out */
- while (mdTellNow(outport) < stamp) ;
- }
-
-
-
-
-
- PPPPaaaaggggeeee 2222
-
-
-
-
-
-
-